package presentacion;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JTabbedPane;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JMenu;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;

import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.Label;
import java.awt.Color;
import javax.swing.*;
import java.awt.Insets;
import java.awt.Window;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Calendar;
import javax.swing.ListSelectionModel;

import negocio.TransferPublicidad;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.DefaultTableModel;
import java.awt.Toolkit;
import java.awt.Dimension;
import javax.swing.border.LineBorder;
import javax.swing.border.EtchedBorder;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class GUIPublicidad extends JFrame {

	private JPanel 				contentPane;
	private JDialog 		 	_guiNuevaEst,		
								_guiModifEst,
								_guiNuevaNota,
								_guiModifNota,
								_guiPubliPeticionMaterial,
								_guiModifTarea;
	private JTable 				_tablaTareas;
	private JTable 				_tablaMaterial;
	private JTable 				_tablaEst;
	private JTable 				_tablaNotas;
	private TransferPublicidad 	_datos = new TransferPublicidad();
	private DefaultTableModel 	_modeloTablaEst,
								_modeloTablaNotas,
								_modeloTablaMaterial,
								_modeloTablaTareas;
	private int 				_dni;
	private boolean				_ftEst   	   = false, //first time, solo se cargan de fichero una vez
								_ftTareas 	   = false, 
								_ftMaterial    = false,
								_ftNotas	   = false;
	
	final JTabbedPane tabbedPane;

	
	

	/**
	 * Create the frame.
	 */
	public GUIPublicidad( int dni ) {
		_dni = dni;
		_datos.setDNI(_dni); //duplico el dni por si en algun momento la referencia del transfer se pierde.
		setIconImage(Toolkit.getDefaultToolkit().getImage("logo_pato.png"));
		setTitle("Patos Academia");
		setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 936, 625);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnArchivo = new JMenu("Archivo");
		mnArchivo.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		menuBar.add(mnArchivo);
		
		JMenuItem mntmCambiarDeUsuario = new JMenuItem("Cambiar de Usuario");
		mntmCambiarDeUsuario.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		mnArchivo.add(mntmCambiarDeUsuario);
		
		JMenuItem mntmCerrar = new JMenuItem("Cerrar");
		mntmCerrar.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		mnArchivo.add(mntmCerrar);
		contentPane = new JPanel();
		contentPane.setBackground(Color.WHITE);
		contentPane.setForeground(Color.BLACK);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		_modeloTablaEst = new DefaultTableModel( new Object[][]{}, new String[]{"Fecha", "Titulo"}) {
			Class[] columnTypes = new Class[] {
				String.class, String.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
			//Hace que las celdas no sean editables
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		};
		
		_tablaEst = new JTable();
		_tablaEst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		_tablaEst.setModel(_modeloTablaEst);
		_tablaEst.getColumnModel().getColumn(0).setResizable(false);
		_tablaEst.getColumnModel().getColumn(0).setPreferredWidth(100);
		_tablaEst.getColumnModel().getColumn(0).setMinWidth(60);
		_tablaEst.getColumnModel().getColumn(0).setMaxWidth(100);
		_tablaEst.getTableHeader().setReorderingAllowed(false); 
		
		
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(0, 36, 680, 530);
		tabbedPane.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent arg0) {
				
					int index = tabbedPane.getSelectedIndex();
					if ( index == 0 && !_ftEst ){ //cargar estadisticas
						
						_ftEst = true;
						SingletonControlador.getInstancia().evento(Evento.PUBLI_CARGA_ESTADISTICAS, _datos);
						
						String[][] est = _datos.getEstadisticas();
						if (est!=null){
							for ( int i = 0; i < est.length; i++ )
								_modeloTablaEst.addRow(new Object[] {est[i][0], est[i][1]});
						}
						
					}else if ( index == 1 && !_ftTareas ){//cargar tareas
						
						_ftTareas = true;
						SingletonControlador.getInstancia().evento(Evento.PUBLI_CARGA_TAREAS, _datos);
						
						ArrayList<String> asuntos = _datos.getAsuntos();
						ArrayList<String> fechas  = _datos.getFechas();
						ArrayList<String> estados = _datos.getEstados();
						
						for ( int i = 0; i < asuntos.size(); i++ ) 
							_modeloTablaTareas.addRow(new Object[] { castEstadoTareas(estados.get(i)), asuntos.get(i), fechas.get(i)} );
						
					}else if (index == 2 && !_ftMaterial ){//cargar materail
						
						_ftMaterial = true;
						SingletonControlador.getInstancia().evento(Evento.PUBLI_CARGA_MATERIAL, _datos);
						
						ArrayList<String> asuntos    = _datos.getAsuntos();
						ArrayList<String> estados    = _datos.getEstados();
						ArrayList<String> cantidades = _datos.getCantidades();
						
						for ( int i = 0; i < asuntos.size(); i++ ) 
							_modeloTablaMaterial.addRow(new Object[] { castEstadoMaterial(estados.get(i)), asuntos.get(i), cantidades.get(i)} );
						
						
					}else if (index == 3 && !_ftNotas ){ //carga Notas

						_ftNotas = true;
						
						//utilizo el campo estadisticas del tranfer para transportar los datos desde el 
						//dao porque necesito un Sting[][]
						SingletonControlador.getInstancia().evento(Evento.PUBLI_CARGA_NOTAS, _datos);
						
						String[][] notas = _datos.getEstadisticas();
						if (notas!=null){
							for ( int i = 0; i < notas.length; i++ )
								_modeloTablaNotas.addRow(new Object[] {notas[i][0], notas[i][1], notas[i][2] });
						}
					}
			}	
		});
		tabbedPane.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));   
		contentPane.setLayout(null);
		contentPane.add(tabbedPane);
		
		JPanel pEstadisticas = new JPanel();
		pEstadisticas.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		tabbedPane.addTab("Estadisticas", null, pEstadisticas, null);
		pEstadisticas.setLayout(null);
		
		JScrollPane scrollPaneEstadist = new JScrollPane();
		scrollPaneEstadist.setBounds(0, 35, 675, 465);
		pEstadisticas.add(scrollPaneEstadist);
		
		/*********************************************************/
		/*				BOTON NUEVA ESTADISTICA					 */
		/*********************************************************/
		JButton bNuevaEstadistica = new JButton("");
		bNuevaEstadistica.setToolTipText("Nueva Estadistica");
		bNuevaEstadistica.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {		
				eventNuevaEst();
			}
		});
		bNuevaEstadistica.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/anhadir.png")));
		bNuevaEstadistica.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bNuevaEstadistica.setBounds(543, 0, 40, 32);
		pEstadisticas.add(bNuevaEstadistica);
		scrollPaneEstadist.setViewportView(_tablaEst);
		
		/*********************************************************/
		/*   		BOTON MODIFICAR/EDITAR ESTADISTICA			 */
		/*********************************************************/
		JButton bModifEst = new JButton("");
		bModifEst.setToolTipText("Editar Estadisticas");
		bModifEst.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				//Check datos de la estatistica en el XML
				try {
					_datos.setTitulo((String)_tablaEst.getModel().getValueAt(_tablaEst.getSelectedRow(), 1));
				}
				catch (java.lang.ArrayIndexOutOfBoundsException e) {
					//cuando no se elige ninguna fila
					JOptionPane.showMessageDialog(new JTextArea(),"No se ha elegido ninguna fila");
					return;
				}
				SingletonControlador.getInstancia().evento(Evento.PUBLI_CHECK_DAT_ESTADISTICA, _datos);	
				
				//Creo la tabla de un modo o de otro segun la operacion que se haya elegido	
				if ( _datos.getOperacion().equalsIgnoreCase("Porcentaje por clase") ) {
					
					_modeloTablaEst = new DefaultTableModel( new Object[][]{}, new String[]{"Clase", "Subclase", "Datos"}) {
						Class[] columnTypes = new Class[] { String.class, String.class, String.class };
						
							public Class getColumnClass(int columnIndex) {
								return columnTypes[columnIndex];
							}
							
							//Hace que las celdas no sean editables
							public boolean isCellEditable(int row, int column) {
								return false;
							}
					};
				}
				else if (_datos.getOperacion().equalsIgnoreCase("Moda")){
					_modeloTablaEst = new DefaultTableModel( new Object[][]{}, new String[]{"Clase","Datos"}) {
						Class[] columnTypes = new Class[] { String.class, String.class };
						
							public Class getColumnClass(int columnIndex) {
								return columnTypes[columnIndex];
							}
							
							//Hace que las celdas no sean editables
							public boolean isCellEditable(int row, int column) {
								return false;
							}
					};
				}
				else {
					_modeloTablaEst = new DefaultTableModel( new Object[][]{}, new String[]{"Datos"}) {
						Class[] columnTypes = new Class[] { Float.class	};
						public Class getColumnClass(int columnIndex) {
							return columnTypes[columnIndex];
						}
						//Hace que las celdas no sean editables
						public boolean isCellEditable(int row, int column) {
							return false;
						}
				};
				}
				_guiModifEst = new GUIModifEstadistica(_modeloTablaEst, _datos);
				((GUIModifEstadistica)_guiModifEst).setTipoOperacion(_datos.getOperacion());
				((GUIModifEstadistica)_guiModifEst).setModeloTabla(_modeloTablaEst);
				_guiModifEst.setVisible(true);
			}
		});
		bModifEst.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/modif_tarea.png")));
		bModifEst.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bModifEst.setBounds(584, 0, 40, 32);
		pEstadisticas.add(bModifEst);
		
		/**********************************************************/
		/*     	        BOTON ELIMINAR ESTADISTICA				  */
		/**********************************************************/
		JButton bEliminarEst = new JButton("");
		bEliminarEst.setToolTipText("Eliminar Estadistica");
		bEliminarEst.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				//Check datos de la estatistica en el XML
				try {
					_datos.setTitulo((String)_tablaEst.getModel().getValueAt(_tablaEst.getSelectedRow(), 1));
				}
				catch (java.lang.ArrayIndexOutOfBoundsException e) {
					//cuando no se elige ninguna fila
					JOptionPane.showMessageDialog(new JTextArea(),"No se ha elegido ninguna fila");
					return;
				}
				SingletonControlador.getInstancia().evento(Evento.PUBLI_ELIMINAR_ESTADISTICA, _datos);
				
				if ( !_datos.getOpDaoCorrecta() )
					JOptionPane.showMessageDialog(new JTextArea(), "Se ha producido un error al borrar la estadistica.");
				else 
					((DefaultTableModel)_tablaEst.getModel()).removeRow(_tablaEst.getSelectedRow());
			}
		});
		bEliminarEst.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/eliminar.png")));
		bEliminarEst.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bEliminarEst.setBounds(625, 0, 40, 32);
		pEstadisticas.add(bEliminarEst);
		/***********************************************************/
		
		JPanel pTareas = new JPanel();
		pTareas.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		tabbedPane.addTab("Tareas", null, pTareas, null);
		pTareas.setLayout(null);
		
		JScrollPane scrollPaneTareas = new JScrollPane();
		scrollPaneTareas.setBounds(0, 35, 675, 470);
		pTareas.add(scrollPaneTareas);
		
		_modeloTablaTareas = new DefaultTableModel(new Object[][] {}, new String[] {"Estado", "Asunto", "Fecha"})
		{
			Class[] columnTypes = new Class[] {
				String.class, String.class, String.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		};
		_tablaTareas = new JTable();
		_tablaTareas.setModel(_modeloTablaTareas);
		
		_tablaTareas.getColumnModel().getColumn(0).setResizable(false);
		_tablaTareas.getColumnModel().getColumn(0).setPreferredWidth(75);
		_tablaTareas.getColumnModel().getColumn(0).setMinWidth(75);
		_tablaTareas.getColumnModel().getColumn(0).setMaxWidth(75);
		_tablaTareas.getTableHeader().setReorderingAllowed(false); 
		scrollPaneTareas.setViewportView(_tablaTareas);
		
		/**********************************************************/
		/*     	        BOTON MODIFICAR TAREA   				  */
		/**********************************************************/
		JButton bModifTarea = new JButton("");
		bModifTarea.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				try {
					_datos.setTitulo((String)_tablaTareas.getModel().getValueAt(_tablaTareas.getSelectedRow(), 1));
				}
				catch (java.lang.ArrayIndexOutOfBoundsException e) {
					//cuando no se elige ninguna fila
					JOptionPane.showMessageDialog(new JTextArea(),"No se ha elegido ninguna fila");
					return;
				}
				//obtiene la descripcion de la tarea y el estado
				SingletonControlador.getInstancia().evento(Evento.PUBLI_GET_DESCRIPCION_TAREA, _datos);
				
				_guiModifTarea = new GUIModifTarea();
				((GUIModifTarea)_guiModifTarea).setDatos(_datos);
				_guiModifTarea.setVisible(true);
				
				//Actualizo la bbdd
				SingletonControlador.getInstancia().evento(Evento.PUBLI_MODIF_TAREA, _datos);
				
				//Actualizo el estado de la tabla
				String estado;
				if (_datos.getEstado().equals("0")) // 0 pendiente, 1 terminada
					estado = "Pendiente";
				else 
					estado = "Terminada";
				_modeloTablaTareas.setValueAt(estado, _tablaTareas.getSelectedRow(), 0);
			}
		});
		bModifTarea.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/modif_tarea.png")));
		bModifTarea.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bModifTarea.setBounds(625, 0, 40, 32);
		pTareas.add(bModifTarea);
		
		/**********************************************************/
		/*     	        BOTON ACTUALIZAR TAREAS   				  */
		/**********************************************************/
		JButton bActualizarTareas = new JButton("");
		bActualizarTareas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				_datos.setAsuntos(null);
				_datos.setFechas(null);
				SingletonControlador.getInstancia().evento(Evento.PUBLI_ACTUALIZAR_TAREAS, _datos);

				int j = _modeloTablaTareas.getRowCount()-1;
				while (j >= 0) {
					_modeloTablaTareas.removeRow(j);
					j--;
				}
				
				ArrayList<String> estados = _datos.getEstados();
				ArrayList<String> asuntos = _datos.getAsuntos();
				ArrayList<String> fechas  = _datos.getFechas();
				for ( int i = 0; i < asuntos.size(); i++ ) 
					_modeloTablaTareas.addRow(new Object[] {castEstadoTareas(estados.get(i)) , asuntos.get(i), fechas.get(i)} );
				
			}
		});
		bActualizarTareas.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bActualizarTareas.setBounds(584, 0, 40, 32);
		pTareas.add(bActualizarTareas);
		bActualizarTareas.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/actualizar.png")));
		
		JPanel pMaterial = new JPanel();
		pMaterial.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		tabbedPane.addTab("Material", null, pMaterial, null);
		pMaterial.setLayout(null);
		
		/***********************************************/
		/*				NUEVA PETCION MATERIAL 		   */
		/***********************************************/
		JButton bPeticionMaterial = new JButton("");
		bPeticionMaterial.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				_guiPubliPeticionMaterial = new GUIPubliPeticionMaterial();
				((GUIPubliPeticionMaterial)_guiPubliPeticionMaterial).setRefsDatos(_modeloTablaMaterial, _datos);
				_guiPubliPeticionMaterial.setVisible(true);
				
				
			}
		});
		bPeticionMaterial.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/anhadir.png")));
		bPeticionMaterial.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bPeticionMaterial.setBounds(625, 0, 40, 32);
		pMaterial.add(bPeticionMaterial);
		
		JScrollPane scrollPaneMaterial = new JScrollPane();
		scrollPaneMaterial.setBounds(1, 35, 674, 467);
		pMaterial.add(scrollPaneMaterial);
		
		
		_modeloTablaMaterial = new DefaultTableModel( new Object[][] {}, new String[] {"Estado", "Material", "Cantidad"})
		{
			Class[] columnTypes = new Class[] {
				Object.class, String.class, String.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		};
		
		_tablaMaterial = new JTable();
		_tablaMaterial.setModel(_modeloTablaMaterial);
		_tablaMaterial.getColumnModel().getColumn(0).setResizable(false);
		_tablaMaterial.getColumnModel().getColumn(0).setPreferredWidth(75);
		_tablaMaterial.getColumnModel().getColumn(0).setMinWidth(75);
		_tablaMaterial.getColumnModel().getColumn(0).setMaxWidth(75);
		_tablaMaterial.getColumnModel().getColumn(2).setResizable(false);
		_tablaMaterial.getColumnModel().getColumn(2).setPreferredWidth(75);
		_tablaMaterial.getColumnModel().getColumn(2).setMinWidth(75);
		_tablaMaterial.getColumnModel().getColumn(2).setMaxWidth(75);
		_tablaMaterial.getTableHeader().setReorderingAllowed(false);
		scrollPaneMaterial.setViewportView(_tablaMaterial);
		
		/***********************************************/
		/* 			ACTUALIZAR MATERIAL 			   */
		/***********************************************/
		JButton bCheckMaterial = new JButton("");
		bCheckMaterial.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				
				_datos.setCantidades(null);
				_datos.setAsuntos(null);
				_datos.setEstados(null);
				
				SingletonControlador.getInstancia().evento(Evento.PUBLI_CARGA_MATERIAL, _datos);
				
				int j = _modeloTablaMaterial.getRowCount()-1;
				while (j >= 0) {
					_modeloTablaMaterial.removeRow(j);
					j--;
				}
				
				ArrayList<String> estados    = _datos.getEstados();
				ArrayList<String> asuntos    = _datos.getAsuntos();
				ArrayList<String> cantidades = _datos.getCantidades();
				for (int i = 0; i < estados.size(); i++)
					_modeloTablaMaterial.addRow(new Object[] {castEstadoMaterial(estados.get(i)), asuntos.get(i), cantidades.get(i)});
			}
		});
		bCheckMaterial.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/actualizar.png")));
		bCheckMaterial.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bCheckMaterial.setBounds(583, 0, 40, 32);
		pMaterial.add(bCheckMaterial);
		
		JPanel pNotas = new JPanel();
		pNotas.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		tabbedPane.addTab("Notas", null, pNotas, null);
		pNotas.setLayout(null);
		
		/********************************************/
		/* 			 		NUEVA NOTA				*/
		/********************************************/
		JButton bNuevaNota = new JButton("");
		bNuevaNota.setToolTipText("A\u00F1adir nueva nota");
		bNuevaNota.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				_guiNuevaNota = new GUINuevaNota();
				((GUINuevaNota)_guiNuevaNota).setRefDatosYModelo(_datos, _modeloTablaNotas);
				_guiNuevaNota.setVisible(true);
			}
		});
		bNuevaNota.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/anhadir.png")));
		bNuevaNota.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bNuevaNota.setBounds(544, 0, 40, 32);
		pNotas.add(bNuevaNota);
		
		/************************************************/
		/*             MODIFICAR ESTADO NOTA 			*/
		/************************************************/
		JButton bModifNota = new JButton("");
		bModifNota.setToolTipText("Consulta la nota y cambia el estado de la misma.");
		bModifNota.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				try {
					_datos.setTitulo(_modeloTablaNotas.getValueAt(_tablaNotas.getSelectedRow(), 2).toString());
					_datos.setFecha(_modeloTablaNotas.getValueAt(_tablaNotas.getSelectedRow(), 1).toString());
				}
				catch (Exception e) {
					JOptionPane.showMessageDialog(null, "No se ha elegido ninguna nota");
					return;
				}
				
				SingletonControlador.getInstancia().evento(Evento.PUBLI_CONSULTA_NOTA, _datos);
				
				_guiModifNota = new GUIModifNota();
				((GUIModifNota)_guiModifNota).setDatos(_datos);
				_guiModifNota.setVisible(true);
				
				
				if (!_datos.getOpDaoCorrecta()){
					JOptionPane.showMessageDialog(null, "Error al cambiar el estado de la nota");
					return;
				}
				
				//Actualiza el estado de la nota
				_modeloTablaNotas.setValueAt( _datos.getEstado(), _tablaNotas.getSelectedRow(), 0);
				
			}
		});
		bModifNota.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/modif_notas.png")));
		bModifNota.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bModifNota.setBounds(584, 0, 40, 32);
		pNotas.add(bModifNota);
		
		JButton bEliminarNota = new JButton("");
		bEliminarNota.setToolTipText("Eliminar nota");
		bEliminarNota.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				try {
					_datos.setTitulo(_modeloTablaNotas.getValueAt(_tablaNotas.getSelectedRow(), 2).toString());
					SingletonControlador.getInstancia().evento(Evento.PUBLI_BORRA_NOTA, _datos);
				}
				catch (Exception e) {
					JOptionPane.showMessageDialog(null, "No se ha elegido ninguna nota");
					return;
				} 
				
				if (_datos.getOpDaoCorrecta())
					_modeloTablaNotas.removeRow(_tablaNotas.getSelectedRow());
				else
					JOptionPane.showMessageDialog(null, "Error al borrar la nota");
			}
		});
		bEliminarNota.setIcon(new ImageIcon(GUIPublicidad.class.getResource("/imagesPath/eliminar.png")));
		bEliminarNota.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 11));
		bEliminarNota.setBounds(625, 0, 40, 32);
		pNotas.add(bEliminarNota);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(0, 36, 675, 466);
		pNotas.add(scrollPane);
		
		_modeloTablaNotas = new DefaultTableModel( new Object[][]{}, new String[]{"Estado", "Fecha", "Nombre"}) 
		{
				Class[] columnTypes = new Class[] {
					String.class, String.class, String.class
				};
				public Class getColumnClass(int columnIndex) {
					return columnTypes[columnIndex];
				}
				public boolean isCellEditable(int row, int column) {
					return false;
				}
		};
		
		_tablaNotas = new JTable();
		_tablaNotas.setModel(_modeloTablaNotas);
		_tablaNotas.getColumnModel().getColumn(0).setResizable(false);
		_tablaNotas.getColumnModel().getColumn(0).setPreferredWidth(100);
		_tablaNotas.getColumnModel().getColumn(0).setMinWidth(100);
		_tablaNotas.getColumnModel().getColumn(0).setMaxWidth(100);
		_tablaNotas.getColumnModel().getColumn(1).setResizable(false);
		_tablaNotas.getColumnModel().getColumn(1).setMinWidth(100);
		_tablaNotas.getColumnModel().getColumn(1).setMaxWidth(100);
		_tablaNotas.getTableHeader().setReorderingAllowed(false);
		scrollPane.setViewportView(_tablaNotas);
		
		PanelUsuarioId panelUsuarioId = new PanelUsuarioId(_dni);
		panelUsuarioId.setBounds(0, 0, 920, 32);
		contentPane.add(panelUsuarioId);
		
		PanelCorreo panelCorreo = new PanelCorreo(_dni);
		panelCorreo.setBounds(681, 60, 239, 506);
		contentPane.add(panelCorreo);
		
		
	}
	
	public void eventNuevaEst(){
		_guiNuevaEst = new GUINuevaEstadistica(_modeloTablaEst);
		Calendar c = Calendar.getInstance();
		((GUINuevaEstadistica)_guiNuevaEst).setDia(Integer.toString(c.get(Calendar.DATE)));
		((GUINuevaEstadistica)_guiNuevaEst).setMes(Integer.toString(c.get(Calendar.MONTH)+1));
		((GUINuevaEstadistica)_guiNuevaEst).setAnho(Integer.toString(c.get(Calendar.YEAR)));
		_guiNuevaEst.setVisible(true);
	}
	
	public String castEstadoTareas( String estado) {
		return estado.equals("0") ? "Pendiente" : "Terminada";
	}
	
	public String castEstadoMaterial (String estado ) {
		return estado.equals("0") ? "Pendiente" : "Aceptado";
	}
	
}
